﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using Data.Common;

namespace DataAccess.FinancialManage
{
    /// <summary>
    /// 资产，金融逻辑处理
    /// </summary>
    public interface IFinancial
    {
        /// <summary>
        /// 创建一条资产记录
        /// </summary>
        /// <param name="incards">存入卡数目，只能为正数，没有则为0</param>
        /// <param name="outcards">取出卡数目，只能为正数，没有则为0</param>
        /// <param name="inmoney">存入钱数目，只能为正数，没有则为0</param>
        /// <param name="outmoney">取出钱数目，只能为正数，没有则为0</param>
        /// <param name="inreceipt">存入押金数目，只能为正数，没有则为0</param>
        /// <param name="outreceipt">取出押金数目，只能为正数，没有则为0</param>
        /// <param name="fixmoney">修正钱数目，用于当前系统运算出来的钱与实际钱不相符合时，填入该字段，用于修正数据库中数据，可以为正，也可以为负，为正数表示钱入库，为负表示钱出库（数据库钱+fixmoney=实际钱）</param>
        /// <param name="fixcard">修正卡数目，用于当前系统运算出来的卡与实际卡数目不相符合时，填入该字段，用于修正数据库中的数据，可以为正，可以为负，为正表示卡入库，为负表示卡出库（数据库卡数+fixcards=实际卡数）</param>
        /// <param name="describe">描述</param>
        /// <returns></returns>
        ResultInfo<int> CreateProperty(int incards,int outcards,decimal inmoney,decimal outmoney,decimal inreceipt,decimal outreceipt,decimal fixmoney,int fixcard,string describe);

        /// <summary>
        /// 获取一条当前站点的最新资产信息
        /// </summary>
        /// <param name="opaddressid"></param>
        /// <returns></returns>
        ResultInfo<jsh_property> GetTopProperty(Int64 opaddressid);

        /// <summary>
        /// 获取指定时间段的交接记录
        /// </summary>
        /// <param name="opaddressid"></param>
        /// <param name="beginTime"></param>
        /// <param name="endTime"></param>
        /// <returns></returns>
        ResultInfo<List<jsh_property>> GetProperties(Int64 opaddressid, DateTime beginTime, DateTime endTime);

        /// <summary>
        /// 获取资产的dataset
        /// </summary>
        /// <param name="opaddressid"></param>
        /// <param name="beginTime"></param>
        /// <param name="endTime"></param>
        /// <returns></returns>
        ResultInfo<DataSet> GetPropertiesDs(Int64 opaddressid, DateTime beginTime, DateTime endTime);
    }
}
